var before_interface = '../interface/before_interface.php';
var after_interface = '../interface/after_interface.php';







/*
	### 检测两表字段是否一至，并获取字段集合

	### 示例：
		_getOrCheckField(function(fieldsListRes){
			...
		});
*/
function _getOrCheckField(fun){
	var view = 1;
	var sessName = 'sessionStorage.fieldsList_'+sessionStorage.ledgerCurrentTname;
	if(eval(sessName)){
		if(view)C('fieldsList from sess');
		fun(JSON.parse(eval(sessName)));
	}else{
		var data = {
			type:'getOrCheckField',		//获取并检查两表的字段
			tname:sessionStorage.ledgerCurrentTname,
		}
		AjaxBefore(data,function(res){
			if(view)C('fieldsList from after');
			var tmp = _checkJsonFormat(res); //检测JSON格式
			var sessName2 = sessName + "='"+JSON.stringify(tmp.data)+"'";
			eval(sessName2);
			fun(tmp.data);
		});
	}
}













/*
	### 检测账号异常强制退出
	type  bool
		false 前台使用
		true  后台使用
*/
function _checkExit(type){
	if(type){
		if(!sessionStorage.ledgerAdminAccount || !sessionStorage.ledgerAdminToken1){
			//A('账号退出！');
			sessionStorage.clear();
			location.replace('login.html');
		}
	}else{
		if(!sessionStorage.ledgerAccount || !sessionStorage.ledgerName || !sessionStorage.ledgerToken1){
			//A('账号退出！');
			sessionStorage.clear();
			location.replace('login.html');
			exit;
		}
	}
	return;
}




//账号退出
function exit(type){
	sessionStorage.clear();
	if(!type){
		location.replace('login.html');
	}
	AjaxBefore({type:'exit'},function(res){});
}







function A(r){
	alert(r);
}
function C(r){
	console.log(r);
}



/*
	###   ajax 异步加载 (JQUERY方式)
	参一：要传送的数据
	参二：成功回调
	参三：请求的后台地址.默认无值为前端后台地址，>0 为后台地址，有值且非int为当前参数地址
	参四：是否异步.当无值时默认为异步，当有值时为同步
	参五：提交方式 默认为post,有值为get
	示例：
		var data = {
					token:t,
					type:type,
					openid:openid
				};

		 Ajax(data,function(res){
		 	alert(res);
		 });
		 或
		 },1);
*/
function Ajax(data,fun,url,async,stat){
	if(!stat){
		stat = 'post';
	}else{
		stat = 'get';
	}
	async = async?false:true;
	if(!url){
		var url = before_interface;
	}else{
		if(parseInt(url)){
			var url = after_interface;
		}
	}
	$.ajax({
		url:url,
		type:stat,
		async:async,
		data:data,
		success:function(rq_res,rq_stat,rq_xhr){
			fun(rq_res,rq_stat,rq_xhr);
		},
		error:function(){
			fun('false');
		}
	});
}

function AjaxBefore(data,fun){
	data.account = sessionStorage.ledgerAccount;
	data.token1 = sessionStorage.ledgerToken1;
	//C(data);
	Ajax(data,function(res){
		fun(res);
	},before_interface,1);
}
function AjaxAfter(data,fun){
	data.account = sessionStorage.ledgerAdminAccount;
	data.token1 = sessionStorage.ledgerAdminToken1;
	Ajax(data,function(res){
		fun(res);
	},after_interface,1);
}


/*
	### 去除字串两边的空格
*/
function m_trim(res){
	return res.replace(/(^\s*)|(\s*$)/g, "");
}



/*
	### 检测JSON数据格式必需是{...}
	参二：type 
			false 为前台 token1
			true  为后台 adminToken1
*/
function _checkJsonFormat(res,type){
	if(res == '10001' || res == '100011'){
		A('缺少工号');
		location.replace('login.html');
		return;
	}
	if(res == '10002'){
		A('token验证失败！');
		location.replace('login.html');
		return;
	}
	if(res == '10003'){
		A('验证码不正确！');
		return;
	}
	if(!/^{.*}$/.test(res)){
		A('数据异常！');
		return;
	}
	var tmp = JSON.parse(res);
	if(type){
		sessionStorage.ledgerAdminToken1 = tmp.token1;
	}else{
		sessionStorage.ledgerToken1 = tmp.token1;
	}
	return tmp;
}








/*
    ### 无限分页最新(无总页，效率分页*推荐*)
        参一：当前页
        参二：允许显示最大页码
        参三：成功的回调函数
        参四：>> 后翻的最大页码 (对应后台 $max_page)
        参五：当前页前后各显示的页数
		参六：指定要填充的元素id
        需要一个id为 fpage 的容器元素 如 <div style="text-align:center;margin:20px" id="fpage"> </div>
        示例：
		if(res.length < 1){
			sessionStorage.shareAllPnow = parseInt(sessionStorage.shareAllPnow) - 1;
			sessionStorage.shareAllMax = sessionStorage.shareAllPnow;
			location.reload();return;
		}
		Fpage(parseInt(sessionStorage.shareAllPnow),parseInt(sessionStorage.shareAllMax),function(p){
			sessionStorage.shareAllPnow = p;
			sessionStorage.shareAllMax = parseInt(p) + 1;
			location.reload();
		},1,1,'#fpage');


*/
function Fpage(PageNo,max_page,fun,step,loop,ele) {
	if(!loop){
		loop=2;
	}
	if(!step){
		step=6;
	}
	PageNo = parseInt(PageNo);
    var start = PageNo - loop;
    if (start < 1) {
        start = 1;
    }
    var end = PageNo + loop;
    if(end > max_page){
    	end = max_page;
    }
    var fpage_str = '';
	if(PageNo > (loop+1)){
		fpage_str += "<a style='margin:5px;border:1px solid;padding:3px 5px;color:#aaa' PageNo='1' >首页</a>";
	}
    var pre = PageNo - step;
    if(pre <= 1){
    	pre = 1
    }
	if(PageNo > 1){
		fpage_str += "<a style='margin:5px;border:1px solid;padding:3px 5px;color:#aaa' PageNo="+pre+" ><<</a>";
	}
    for (var i = start; i <= end; i++) {

        if (PageNo == i) {
            fpage_str += "<a style='margin:5px;border:1px solid blue;padding:3px 5px;color:#fff;background:blue' PageNo=" + i + ">" + i + "</a>";
        } else {
            fpage_str += "<a style='margin:5px;border:1px solid;padding:3px 5px;color:#aaa' PageNo=" + i + ">" + i + "</a>";
        }
    }
    var next = PageNo + step;
    if(next >= max_page){
    	next = max_page
    }
    //console.log(max_page);
	if(PageNo < max_page){
		fpage_str += "<a style='margin:5px;border:1px solid;padding:3px 5px;color:#aaa' PageNo="+next+" >>></a>";
	}
	if(!ele){
		ele = '#fpage';
	}
	$(ele).html(fpage_str);
    $(ele+" a").click(function () {
    	if(PageNo == $(this).attr('PageNo')){
    		return;
    	}
        PageNo = $(this).attr('PageNo');
        fun(PageNo);
    });
}



if (!window.JSON) {
    window.JSON = {
        parse: function(jsonStr) {
            return eval('(' + jsonStr + ')');
        },
        stringify: function(jsonObj) {
            var result = '',
                curVal;
            if (jsonObj === null) {
                return String(jsonObj);
            }
            switch (typeof jsonObj) {
                case 'number':
                case 'boolean':
                    return String(jsonObj);
                case 'string':
                    return '"' + jsonObj + '"';
                case 'undefined':
                case 'function':
                    return undefined;
            }

            switch (Object.prototype.toString.call(jsonObj)) {
                case '[object Array]':
                    result += '[';
                    for (var i = 0, len = jsonObj.length; i < len; i++) {
                        curVal = JSON.stringify(jsonObj[i]);
                        result += (curVal === undefined ? null : curVal) + ",";
                    }
                    if (result !== '[') {
                        result = result.slice(0, -1);
                    }
                    result += ']';
                    return result;
                case '[object Date]':
                    return '"' + (jsonObj.toJSON ? jsonObj.toJSON() : jsonObj.toString()) + '"';
                case '[object RegExp]':
                    return "{}";
                case '[object Object]':
                    result += '{';
                    for (i in jsonObj) {
                        if (jsonObj.hasOwnProperty(i)) {
                            curVal = JSON.stringify(jsonObj[i]);
                            if (curVal !== undefined) {
                                result += '"' + i + '":' +curVal + ',';
                            }
                        }
                    }
                    if (result !== '{') {
                        result = result.slice(0, -1);
                    }
                    result += '}';
                    return result;

                case '[object String]':
                    return '"' + jsonObj.toString() + '"';
                case '[object Number]':
                case '[object Boolean]':
                    return jsonObj.toString();
            }
        }
    };
}




/*
	### 将文件大小转换成相应的单位
	
*/
function _getSize(res){
	var size = parseFloat(res);
	if(size < 1024){
		var size2 = size + 'B';
	}
	if(size > 1024){
		var size2 = (size/1024).toFixed(2) + 'KB';
	}
	if(size > 1024 * 1024){
		var size2 = (size/1024/1024).toFixed(2) + 'MB';
	}
	if(size > 1024 * 1024 * 1024){
		var size2 = (size/1024/1024/1024).toFixed(3) + 'GB';
	}
	return size2;
}









/*
	### 将时间戳转换成 年月日格式的字串 
	### 参一：stamp js时间戳 
		参二：stat无值反回年月日，有值返回年月日时分秒
	### return : 返回年月日格式的字串
	### 示例：
		var t2 = StampToYmd(server_time);	//2018-5-15
*/
function StampToYmd(stamp,stat){
	var t = new Date(stamp);
	var t2 = t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate();
	if(stat){
		var t3 = t2+' '+(t.getHours()>=10?t.getHours():'0'+t.getHours())+':'+(t.getMinutes()>=10?t.getMinutes():'0'+t.getMinutes())+':'+(t.getMinutes()>=10?t.getMinutes():'0'+t.getMinutes());
		return t3;
	}else{
		return t2;
	}
}







/*
	### 检测并替换字串中的特殊字符为实体字符 (' , " , > , < , / , \)
	### 参一：源字串 
	### 参二：是否反解析，默认空为特殊字符转实体
	### return : 返回替换后的字串
	### 示例：
		var content = $('textarea[name=content]').val().trim();
		content = ChangeChar(content);
		或
		ChangeChar(obj.info_title,1)
*/
function ChangeChar(val,stat){
	if(stat){
		var p1 = /&#60/g;
		val = val.replace(p1,"<");
		var p2 = /&#62/g;
		val = val.replace(p2,">");
		var p2 = /&#39/g;
		val = val.replace(p2,"'");
		var p2 = /&#34/g;
		val = val.replace(p2,'"');
		var p2 = /&#47/g;
		val = val.replace(p2,"\/");
		var p2 = /&#92/g;
		val = val.replace(p2,"\\");
		var p2 = /&#59/g;
		val = val.replace(p2,";");
		return val;
	}else{
		var p1 = /</g;
		val = val.replace(p1,"&#60");
		var p2 = />/g;
		val = val.replace(p2,"&#62");
		var p2 = /'/g;
		val = val.replace(p2,"&#39");
		var p2 = /"/g;
		val = val.replace(p2,"&#34");
		var p2 = /\//g;
		val = val.replace(p2,"&#47");
		var p2 = /\\/g;
		val = val.replace(p2,"&#92");
		var p2 = /;/g;
		val = val.replace(p2,"&#59");
		return val;
	}
}


/*
	### 检测是否有非法字符 / \ < > ' " !
		有非法字符返回false
		正常返回true
*/
function _checkChar(str){
	if(/\s|\\|\/|\<|\>|\'|\"|!/.test(str)){
		return false;
	}
	return true;
}



/*
	### 蒙板提示框(提示时页面被盖不可操作)
	### 参一：提示内容
	### 需要：函数需要一个 id='notice' 的元素做容器
	### 示例：
		 Notice('信息发布成功！'); //开启提示框
		 Notice();	//关闭提示框
*/
var Notice_deg = 1;
var Notice_rotate;
function Notice(text){
	if(text){
		var str = "<div class='sca_Notice' style='z-index:100;position:fixed;top:0px;width:100%;height:100%;background:rgba(255,100,100,0.5)'><div id='notice_text' style='background:#fff;width:200px;margin:20% auto;text-align:center;padding:30px;border-radius:10px'><div class='sca_Notice_img' style='padding:10px;border-top:1px solid #bbb;border-right:1px solid #999;border-bottom:1px solid #666;display:inline-block;border-radius:25px'></div><div>"+text+"</div></div></div>";
		$('body').append(str);
		Notice_rotate = setInterval(function(){
			$(".sca_Notice_img").css({'transform':'rotate('+Notice_deg+'deg)'});
			Notice_deg +=25;
		},100)
	}else{
		//$('.sca_Notice').html('');
		$('.sca_Notice').remove();
		clearInterval(Notice_rotate);	
	}
}
